package ch9;

import java.util.stream.IntStream;

public class PackageClass {

	public static void main(String[] args) {
		//java8种基本数据类型提供了一个包装类
		//包装类的主要用途是完成基本数据类型和字符串间的互相转换，或在基本数据类型中转换；提供了一些重要的属性
		
		//1.布尔值与布尔类型的转换
		boolean bool = true;
		String str = ""+bool;//把boolean值转换成字符串
		Boolean boolean1 = new Boolean(bool);
		
		str = boolean1.toString();//从包装类转字符串
		boolean bool2 = boolean1.booleanValue();
		
		bool2 = Boolean.getBoolean("false");//把字符串转化成boolean
		Boolean bool3 = Boolean.valueOf("true");
		Boolean bool4 = Boolean.valueOf("true");//把包装类对象转换成原始数据类型的过程，拆箱
		bool4 = bool3;//把包装类（Boolean类型）对象直接赋值给原始数据类型（boolean类型）- 自动拆箱
		
		//把原始数据类型转换成包装类对象的过程 - 装箱
		Boolean boolean2 = bool4;//把原始数据类型直接赋值给包装类对象的过程，自动拆箱
		boolean2 = new Boolean(false);
		boolean2 = new Boolean("false");
		
		
		
		//int类型的转换
		int i = 100;
		String inString = "100";
		
		//把数字或字符串转换成包装类
		Integer integer = new Integer(i);//把数字转换成包装类 - 装箱
		integer = Integer.valueOf(i);//装箱
		integer = i; //自动装箱
		
		
		integer = new Integer(inString);//把数字字符串转换为包装类
		integer = Integer.valueOf(inString);
		
		//把数字字符串转换成数字
		int ii = Integer.parseInt(inString);
		ii = integer.intValue(); //通过方法拆箱
		ii = integer;//自动拆箱
		
		long l = integer.longValue();//在不同数据类型间的转换
		short s = integer.shortValue();
		byte b = integer.byteValue();
		float f = integer.floatValue();
		double d = integer.doubleValue();
		//char c = integer.charValue(); -- 注意：数据类型间的转换不包含char类型
		
		
		char c = 'a';
		Character character = new Character(c);
		String string = character.toString();
		//string = '中' --  字符类不能直接赋值给字符串类型
		string = String.valueOf(c);
		
		
		//使用Interger.parseInt进行数据类型转换时，可以执行数值的进制：十进制，二进制，八进制，十六进制
		 //Integer.parseInt("0", 10) ;//returns 0
		 //Integer.parseInt("473", 10); //returns 473
		 //Integer.parseInt("+42", 10); //returns 42
		 //Integer.parseInt("-0", 10); //returns 0
		 //Integer.parseInt("-FF", 16); //returns -255
		 
		// Integer.parseInt("1100110", 2);//returns 102
		 //Integer.parseInt("2147483647", 10); //returns 2147483647
		// Integer.parseInt("-2147483648", 10); //returns -2147483648
		 //Integer.parseInt("2147483648", 10);// throws a NumberFormatException
		 //Integer.parseInt("99", 8) ;//throws a NumberFormatException
		 //Integer.parseInt("Kona", 10) ;//throws a NumberFormatException
		// Integer.parseInt("Kona", 27) ;//returns 411787

		int k = Integer.parseInt("90",10);//转换为10进制->10进制
		System.out.println(k);
		
		k = Integer.parseInt("90",16);//转换为16进制->10进制
		System.out.println(k);
		
		k = Integer.parseInt("70",8);//转换为8进制->10进制
		System.out.println(k);
		
		k = Integer.parseInt("11001101",2);//转换为2进制->10进制
		System.out.println(k);
		
		k = Integer.parseInt("l",27);//转换为27进制->10进制
		System.out.println(k);
		
		k = Integer.parseInt("z",36);//转换为27进制->10进制
		System.out.println(k);
		
		System.out.println("=================================");
		System.out.println("Byte.SIZE:"+Byte.SIZE);
		System.out.println("Short.SIZE:"+Short.SIZE);
		System.out.println("Interger.SIZE:"+Integer.SIZE);
		System.out.println("Long.SIZE:"+Long.SIZE);
		System.out.println("Float.SIZE:"+Float.SIZE);
		System.out.println("Double.SIZE:"+Double.SIZE); 
	}

}
